package Codigo;

import java.util.ArrayList;
import java.util.List;

public class TratarSenha {
	
	public List<String> letraPressionada = new ArrayList<String>();
    public String textoSenha;
	private List<String> senhasValidas;

	
	public void verificaSenhaDigitada(){
		senhasValidas = new ArrayList<String>();
		if (textoSenha.length()==8){
			acharSenha(8);
			System.out.println("cheguei 8");
		}
		else{
			acharSenha(10);
			System.out.println("cheguei 10");
		}
	}	
	
	
	
	private void acharSenha(int max) {
		String pas = "";
		int k;
		for (int i = 0; i < 6; i++) { 
			pas+=letraPressionada.get(0).charAt(i); //posicoes da primeira string
			for(k = 0 ; k < 6; k++){   //posicao do tamanho da string
				for(int j = 1; j < max; j++){  //numero de posicoes do vetor
					pas+=letraPressionada.get(j).charAt(k);
				}
				if (verSeqRepSenha(pas) == 1)
					senhasValidas.add(pas);
				pas="";
				if (k < 5){
					pas+=letraPressionada.get(0).charAt(i);
				}
			}		
		}
	}

	private int verSeqRepSenha(String pas) {
		int aux, aux2, aux3;
	     
	    for (int i = 0; i < pas.length()-2; i++) {
	    	aux=(int)pas.charAt(i);
			aux2=(int)pas.charAt(i+1);
			aux3=(int)pas.charAt(i+2);
			if((aux==aux2)||(aux==aux3)||(aux2==aux3)) //testo AAA
				return 0;
			if (((aux+1) == aux2)&&((aux2+1)==aux3)) // testo sequencia ABC
				return 0;
			if((aux==(aux2+1))&&(aux2==(aux3+1))) // testo CBA
				return 0;
			if (pas.indexOf(i) > 0) // caracteres repetidos
				return 0;				
		}
			
		return 1; //string sem sequencias
		
	}

	
	public List<String> getLetraPressionada() {
		return letraPressionada;
	}

	public void setLetraPressionada(String letraPressionada) {
		this.letraPressionada.add(letraPressionada);
	}

	public String getTextoSenha() {
		return textoSenha;
	}

	public void setTextoSenha(String textoSenha) {
		this.textoSenha = textoSenha;
	}


}
